package membresia.em.financeiro;

/*
 * To change this template, choose Tools | Templates and open the template in
 * the editor.
 */
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import membresia.bean.financeiro.MotivoSaida;
import membresia.service.Service;

public class MotivoSaidaEm {

    /**
     * Método que persiste um objeto MotivoSaida no Banco
     */
    public static void cadastraMotivoSaida(MotivoSaida p) {
        // persiste no banco de dados
        EntityManager em = Service.getEntityManagerFactory();
        em.getTransaction().begin();
        em.persist(p);
        em.flush();
        em.getTransaction().commit();
        em.close();

    }

    /**
     * Método que Atualiza um Objeto MotivoSaida
     */
    public static void atualizaMotivoSaida(MotivoSaida p) {
        // persiste no banco de dados
        EntityManager em = Service.getEntityManagerFactory();
        em.getTransaction().begin();
        em.merge(p);
        em.flush();
        em.getTransaction().commit();
        em.close();
    }

    /**
     * Método busca uma MotivoSaida pelo ID
     *
     * @return MotivoSaida
     */
    public static MotivoSaida findById(int id) {
        EntityManager em = Service.getEntityManagerFactory();
        em.getTransaction().begin();
        MotivoSaida p = em.find(MotivoSaida.class, id);
        em.getTransaction().commit();
        em.close();
        return p;
    }

    /**
     * Método que lista todas as MotivoSaidas
     */
    @SuppressWarnings("unchecked")
    public static List<MotivoSaida> findAll() {
        EntityManager em = Service.getEntityManagerFactory();
        em.getTransaction().begin();
        Query q = em.createQuery("select p from MotivoSaida p ");
        List<MotivoSaida> MotivoSaidas = q.getResultList();
        em.flush();
        em.getTransaction().commit();
        em.close();
        return MotivoSaidas;
    }

    /**
     * Método que lista todas as MotivoSaidas
     */
    @SuppressWarnings("unchecked")
    public static List<MotivoSaida> findByNome(String nome) {
        EntityManager em = Service.getEntityManagerFactory();
        em.getTransaction().begin();
        Query q = em.createQuery("select p from MotivoSaida p where p.descricao like '%"
                + nome + "%'");
        List<MotivoSaida> MotivoSaidas = q.getResultList();
        em.flush();
        em.getTransaction().commit();
        em.close();
        return MotivoSaidas;
    }

    /**
     * Método de Exclusão de MotivoSaida
     */
    public static void excluirMotivoSaida(int id) {
        // exclui uma MotivoSaida por id
        MotivoSaida MotivoSaida = findById(id);
        // excluir a MotivoSaida
        EntityManager em = Service.getEntityManagerFactory();
        em.getTransaction().begin();
        em.remove(em.getReference(MotivoSaida.class, MotivoSaida.getId()));
        em.flush();
        em.getTransaction().commit();
        em.close();
    }
}